#pragma once
#include "DXAMLCommon.h"
#include "IPALUri.h"
#include "IPALOfflineApplicationStore.h"
#include "IPALMemory.h"
#include "IPALCertificate.h"

class IPALOfflineApplicationServices
{
public:
	virtual HRESULT CreateOfflineApplicationStore(CXString *, XUINT32, IPALOfflineApplicationStore **) = 0;
	virtual HRESULT RegisterOfflineApplication( const void *hwndOwner, const XCHAR * pszSite, const long double nUsedInMB, const long double nRequestedInMB) = 0;
	virtual HRESULT UnregisterOfflineApplication(CXString *) = 0;
	virtual HRESULT LaunchOfflineApplication(CXString *) = 0;
	virtual HRESULT RequestApplicationInstall(IXcpBrowserHost *, const void *, XUINT32, AuthenticodeSignatureResult, AuthenticodeTrustResult, IPALCertificate *, const XCHAR * , const XCHAR * , IPALMemory *, XINT32 *) = 0;
	virtual HRESULT GetApplicationID(IPALUri *pXapUri, XUINT32 bRegister, CXString **ppstrAppID) = 0;
	virtual HRESULT UnregisterApplicationID( CXString *) = 0;
	virtual HRESULT DownloadUpdatedXap( IPALOfflineApplicationStore *pOfflineStore, CXString *pstrXapLastModified, int lLastModifiedFallback, IPALMemory **ppNewXap, CXString **ppstrNewXapLastModified) = 0;
	virtual XUINT32 IsRunningInOfflineLauncher() = 0;
	virtual HRESULT CloseOfflineLauncher() = 0;
	virtual HRESULT GetRuntimeVersionCheckEnabled( XUINT32 *pbRuntimeVersionCheckEnabled) = 0;
	virtual HRESULT IsSeparateAppStoresSupported(XUINT32 *) = 0;
};